home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Games / SpriteFight 2002 v2.0a1 / BlitPixie.h < prev    next >
Text File  |  1994-04-25  |  3KB  |  148 lines

  1. ///--------------------------------------------------------------------------------------
  2. //    BlitPixie.h
  3. //
  4. //    Created:    Thursday, September 24, 1992 at 11:48 PM
  5. //    By:            Tony Myles
  6. //
  7. //    Copyright: © 1991-94 Tony Myles, All rights reserved worldwide.
  8. ///--------------------------------------------------------------------------------------
  9.  
  10.  
  11. #ifndef __BLITPIXIE__
  12. #define __BLITPIXIE__
  13.  
  14. #ifndef __SWCOMMON__
  15. #include "SWCommonHeaders.h"
  16. #endif
  17.  
  18. #ifndef __QUICKDRAW__
  19. #include <QuickDraw.h>
  20. #endif
  21.  
  22. #ifndef __FRAME__
  23. #include "Frame.h"
  24. #endif
  25.  
  26.  
  27. ///--------------------------------------------------------------------------------------
  28. //        type definitions & conditional macros
  29. ///--------------------------------------------------------------------------------------
  30.  
  31. #if SW_PPC
  32.  
  33. typedef double PixelChunk, *PixelChunkPtr, **PixelChunkHdl;
  34.  
  35. #define SW_USE_C 1
  36.  
  37. #define BytesToChunks(b) ((b) >> 3)
  38.  
  39. #define BlitPixelChunk(s, d)    { *(d) = *(s);(d)++;(s)++; }
  40.  
  41. #define BlitPixelLongMask(s, d, m)        \
  42.         {                                \
  43.             register unsigned long _t;    \
  44.                                         \
  45.             _t = *(d);                    \
  46.             _t &= *(m);                    \
  47.             _t |= *(s);                    \
  48.             *(d) = _t;                    \
  49.             (s)++;(d)++;(m)++;            \
  50.         }
  51.  
  52. #else    // SW_PPC
  53.  
  54.  
  55. typedef unsigned long PixelChunk, *PixelChunkPtr, **PixelChunkHdl;
  56.  
  57. #if MPW
  58. #define SW_USE_C 1
  59. #else
  60. #define SW_USE_C 0
  61. #endif
  62.  
  63. #define BytesToChunks(b) ((b) >> 2)
  64.  
  65. #define BlitPixelChunk(s, d)    (*(d)++ = *(s)++)
  66.  
  67. #define BlitPixelLongMask(s, d, m)    (*(d)++ = (*(d) & *(m)++) | *(s)++)
  68.  
  69.  
  70. #endif    // SW_PPC
  71.  
  72.  
  73. typedef unsigned long* PixelPtr;
  74.  
  75.  
  76. #define kBitsPerPixel 8
  77.  
  78. #define kRightAlignFactor (((sizeof(PixelChunk) * kBitsPerByte) / kBitsPerPixel) - 1)
  79. #define kLeftAlignFactor (~kRightAlignFactor)
  80.  
  81.  
  82. ///--------------------------------------------------------------------------------------
  83. //        function prototypes
  84. ///--------------------------------------------------------------------------------------
  85.  
  86. #ifdef __cplusplus
  87. extern "C" {
  88. #endif
  89.  
  90. SW_FUNC void BlitPixieWorldDrawProc(
  91.     FramePtr srcFrameP,
  92.     FramePtr dstFrameP,
  93.     Rect *blitRect);
  94.  
  95. SW_FUNC void BlitPixieSpriteDrawProc(
  96.     FramePtr srcFrameP,
  97.     FramePtr dstFrameP,
  98.     Rect *srcRect,
  99.     Rect *dstRect);
  100.  
  101. SW_FUNC void BlitPixieMaskDrawProc(
  102.     FramePtr srcFrameP,
  103.     FramePtr dstFrameP,
  104.     Rect *srcRect,
  105.     Rect *dstRect);
  106.  
  107. SW_FUNC void CompiledSpriteDrawProc(
  108.     FramePtr srcFrameP,
  109.     FramePtr dstFrameP,
  110.     Rect *srcRect,
  111.     Rect *dstRect);
  112.  
  113. SW_FUNC void FastCompiledSpriteDrawProc(
  114.     FramePtr srcFrameP,
  115.     FramePtr dstFrameP,
  116.     Rect *srcRect,
  117.     Rect *dstRect);
  118.  
  119. void BlitPixie(
  120.     register PixelChunkPtr srcPixelP,
  121.     register PixelChunkPtr dstPixelP,
  122.     register unsigned long rowsToCopy,
  123.     register unsigned long numBytesPerRow,
  124.     register unsigned long srcRowStride,
  125.     register unsigned long dstRowStride);
  126.  
  127. void BlitPixieChunks(
  128.     register PixelChunkPtr srcPixelP,
  129.     register PixelChunkPtr dstPixelP,
  130.     register unsigned long rowsToCopy,
  131.     register unsigned long longWordsPerRow,
  132.     register unsigned long srcRowStride,
  133.     register unsigned long dstRowStride);
  134.  
  135. void BlitPixieMask(
  136.     register PixelPtr srcPixelP,
  137.     register PixelPtr dstPixelP,
  138.     register PixelPtr maskPixelP,
  139.     register unsigned long rowsToCopy,
  140.     register unsigned long numBytesPerRow,
  141.     register unsigned long srcRowStride,
  142.     register unsigned long dstRowStride);
  143.  
  144. #ifdef __cplusplus
  145. };
  146. #endif
  147. #endif /* __BLITPIXIE__ */
  148.